#
# see more: http://commons.apache.org/proper/commons-dbcp/
#           http://commons.apache.org/proper/commons-dbcp/configuration.html
#

# \u521d\u59cb\u5316\u8fde\u63a5: \u8fde\u63a5\u6c60\u542f\u52a8\u65f6\u521b\u5efa\u7684\u521d\u59cb\u5316\u8fde\u63a5\u6570\u91cf, Default: 0
initialSize=10

# \u6700\u5927\u6d3b\u52a8\u8fde\u63a5: \u8fde\u63a5\u6c60\u5728\u540c\u4e00\u65f6\u95f4\u80fd\u591f\u5206\u914d\u7684\u6700\u5927\u6d3b\u52a8\u8fde\u63a5\u7684\u6570\u91cf, \u5982\u679c\u8bbe\u7f6e\u4e3a\u975e\u6b63\u6570\u5219\u8868\u793a\u4e0d\u9650\u5236, Default: 8
maxActive=30

# \u6700\u5c0f\u7a7a\u95f2\u8fde\u63a5: \u8fde\u63a5\u6c60\u4e2d\u5bb9\u8bb8\u4fdd\u6301\u7a7a\u95f2\u72b6\u6001\u7684\u6700\u5c0f\u8fde\u63a5\u6570\u91cf, \u4f4e\u4e8e\u8fd9\u4e2a\u6570\u91cf\u5c06\u521b\u5efa\u65b0\u7684\u8fde\u63a5, \u5982\u679c\u8bbe\u7f6e\u4e3a0\u5219\u4e0d\u521b\u5efa, Default: 0
minIdle=5

# \u6700\u5927\u7a7a\u95f2\u8fde\u63a5: \u8fde\u63a5\u6c60\u4e2d\u5bb9\u8bb8\u4fdd\u6301\u7a7a\u95f2\u72b6\u6001\u7684\u6700\u5927\u8fde\u63a5\u6570\u91cf, \u8d85\u8fc7\u7684\u7a7a\u95f2\u8fde\u63a5\u5c06\u88ab\u91ca\u653e, \u5982\u679c\u8bbe\u7f6e\u4e3a\u8d1f\u6570\u8868\u793a\u4e0d\u9650\u5236, Default: 8
maxIdle=10

# \u6700\u5927\u7b49\u5f85\u65f6\u95f4: \u5f53\u6ca1\u6709\u53ef\u7528\u8fde\u63a5\u65f6, \u8fde\u63a5\u6c60\u7b49\u5f85\u8fde\u63a5\u88ab\u5f52\u8fd8\u7684\u6700\u5927\u65f6\u95f4(\u4ee5\u6beb\u79d2\u8ba1\u6570), \u8d85\u8fc7\u65f6\u95f4\u5219\u629b\u51fa\u5f02\u5e38, \u5982\u679c\u8bbe\u7f6e\u4e3a-1\u8868\u793a\u65e0\u9650\u7b49\u5f85, Default: \u65e0\u9650
maxWait=10000

# SQL\u67e5\u8be2, \u7528\u6765\u9a8c\u8bc1\u4ece\u8fde\u63a5\u6c60\u53d6\u51fa\u7684\u8fde\u63a5, \u5728\u5c06\u8fde\u63a5\u8fd4\u56de\u7ed9\u8c03\u7528\u8005\u4e4b\u524d, \u5982\u679c\u6307\u5b9a, \u5219\u67e5\u8be2\u5fc5\u987b\u662f\u4e00\u4e2aSQL SELECT\u5e76\u4e14\u5fc5\u987b\u8fd4\u56de\u81f3\u5c11\u4e00\u884c\u8bb0\u5f55, Default: \u7a7a
validationQuery=SELECT 1 FROM DUAL

# \u6307\u660e\u662f\u5426\u5728\u4ece\u6c60\u4e2d\u53d6\u51fa\u8fde\u63a5\u524d\u8fdb\u884c\u68c0\u9a8c, \u5982\u679c\u68c0\u9a8c\u5931\u8d25\u5219\u4ece\u6c60\u4e2d\u53bb\u9664\u8fde\u63a5\u5e76\u5c1d\u8bd5\u53d6\u51fa\u53e6\u4e00\u4e2a, Default: true
# \u6ce8\u610f: \u8bbe\u7f6e\u4e3atrue\u540e\u5982\u679c\u8981\u751f\u6548, validationQuery\u53c2\u6570\u5fc5\u987b\u8bbe\u7f6e\u4e3a\u975e\u7a7a\u5b57\u7b26\u4e32
testOnBorrow=true

# \u6307\u660e\u662f\u5426\u5728\u5f52\u8fd8\u5230\u6c60\u4e2d\u524d\u8fdb\u884c\u68c0\u9a8c, Default: false
# \u6ce8\u610f: \u8bbe\u7f6e\u4e3atrue\u540e\u5982\u679c\u8981\u751f\u6548, validationQuery\u53c2\u6570\u5fc5\u987b\u8bbe\u7f6e\u4e3a\u975e\u7a7a\u5b57\u7b26\u4e32
testOnReturn=false

# \u6307\u660e\u8fde\u63a5\u662f\u5426\u88ab\u7a7a\u95f2\u8fde\u63a5\u56de\u6536\u5668(\u5982\u679c\u6709)\u8fdb\u884c\u68c0\u9a8c.\u5982\u679c\u68c0\u6d4b\u5931\u8d25\u5219\u8fde\u63a5\u5c06\u88ab\u4ece\u6c60\u4e2d\u53bb\u9664, Default: false
# \u6ce8\u610f: \u8bbe\u7f6e\u4e3atrue\u540e\u5982\u679c\u8981\u751f\u6548, validationQuery\u53c2\u6570\u5fc5\u987b\u8bbe\u7f6e\u4e3a\u975e\u7a7a\u5b57\u7b26\u4e32
testWhileIdle=true

# \u5728\u7a7a\u95f2\u8fde\u63a5\u56de\u6536\u5668\u7ebf\u7a0b\u8fd0\u884c\u671f\u95f4\u4f11\u7720\u7684\u65f6\u95f4\u503c, \u5355\u4f4d\u6beb\u79d2, \u5982\u679c\u8bbe\u7f6e\u4e3a\u975e\u6b63\u6570, \u5219\u4e0d\u8fd0\u884c\u7a7a\u95f2\u8fde\u63a5\u56de\u6536\u5668\u7ebf\u7a0b, Default: -1
timeBetweenEvictionRunsMillis=5000

# \u5728\u6bcf\u6b21\u7a7a\u95f2\u8fde\u63a5\u56de\u6536\u5668\u7ebf\u7a0b(\u5982\u679c\u6709)\u8fd0\u884c\u65f6\u68c0\u67e5\u7684\u8fde\u63a5\u6570\u91cf, Default: 3
numTestsPerEvictionRun=3

# \u8fde\u63a5\u5728\u6c60\u4e2d\u4fdd\u6301\u7a7a\u95f2\u800c\u4e0d\u88ab\u7a7a\u95f2\u8fde\u63a5\u56de\u6536\u5668\u7ebf\u7a0b(\u5982\u679c\u6709)\u56de\u6536\u7684\u6700\u5c0f\u65f6\u95f4\u503c, \u5355\u4f4d\u6beb\u79d2, Default: 1000 * 60 * 30
minEvictableIdleTimeMillis=30000

# \u5f00\u542f\u6c60\u7684Prepared Statement\u6c60\u529f\u80fd, Default: false
poolPreparedStatements=false

# Statement\u6c60\u80fd\u591f\u540c\u65f6\u5206\u914d\u7684\u6253\u5f00\u7684Statements\u7684\u6700\u5927\u6570\u91cf, \u5982\u679c\u8bbe\u7f6e\u4e3a0\u8868\u793a\u4e0d\u9650\u5236, Default: \u4e0d\u9650\u5236
maxOpenPreparedStatements=0

# \u6807\u8bb0\u662f\u5426\u5220\u9664\u6cc4\u9732\u7684\u8fde\u63a5,\u5982\u679c\u4ed6\u4eec\u8d85\u8fc7\u4e86removeAbandonedTimout\u7684\u9650\u5236, \u5982\u679c\u8bbe\u7f6e\u4e3atrue, \u8fde\u63a5\u88ab\u8ba4\u4e3a\u662f\u88ab\u6cc4\u9732\u5e76\u4e14\u53ef\u4ee5\u88ab\u5220\u9664,
# \u5982\u679c\u7a7a\u95f2\u65f6\u95f4\u8d85\u8fc7removeAbandonedTimeout, \u8bbe\u7f6e\u4e3atrue\u53ef\u4ee5\u4e3a\u5199\u6cd5\u7cdf\u7cd5\u7684\u6ca1\u6709\u5173\u95ed\u8fde\u63a5\u7684\u7a0b\u5e8f\u4fee\u590d\u6570\u636e\u5e93\u8fde\u63a5, Default: false
removeAbandoned=true

# \u6cc4\u9732\u7684\u8fde\u63a5\u53ef\u4ee5\u88ab\u5220\u9664\u7684\u8d85\u65f6\u503c, \u5355\u4f4d\u79d2, Defalut: 300
removeAbandonedTimeout=60

# \u6807\u8bb0\u5f53Statement\u6216\u8fde\u63a5\u88ab\u6cc4\u9732\u65f6\u662f\u5426\u6253\u5370\u7a0b\u5e8f\u7684stack traces\u65e5\u5fd7, Default: false
# \u88ab\u6cc4\u9732\u7684Statements\u548c\u8fde\u63a5\u7684\u65e5\u5fd7\u6dfb\u52a0\u5728\u6bcf\u4e2a\u8fde\u63a5\u6253\u5f00\u6216\u8005\u751f\u6210\u65b0\u7684Statement, \u56e0\u4e3a\u9700\u8981\u751f\u6210stack trace,
# \u5982\u679c\u5f00\u542f"removeAbandoned", \u90a3\u4e48\u8fde\u63a5\u5728\u88ab\u8ba4\u4e3a\u6cc4\u9732\u65f6\u53ef\u80fd\u88ab\u6c60\u56de\u6536, \u8fd9\u4e2a\u673a\u5236\u5728(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)\u65f6\u88ab\u89e6\u53d1,
# \u4f8b: \u5f53maxActive=20, \u6d3b\u52a8\u8fde\u63a5\u4e3a18, \u7a7a\u95f2\u8fde\u63a5\u4e3a1\u65f6\u53ef\u4ee5\u89e6\u53d1"removeAbandoned", 
# \u4f46\u662f\u6d3b\u52a8\u8fde\u63a5\u53ea\u6709\u5728\u6ca1\u6709\u88ab\u4f7f\u7528\u7684\u65f6\u95f4\u8d85\u8fc7"removeAbandonedTimeout"\u65f6\u624d\u88ab\u5220\u9664, \u9ed8\u8ba4300\u79d2, \u5728resultset\u4e2d\u6e38\u5386\u4e0d\u88ab\u8ba1\u7b97\u4e3a\u88ab\u4f7f\u7528
logAbandoned=true

